package com.learning.mybatis.config.plugins;

import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.reflection.factory.DefaultObjectFactory;
import org.apache.ibatis.reflection.factory.ObjectFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * ClassName: MybatisConfigPluginsApplication
 * Description: MyBatis配置，Plugins 插件
 * <p>
 * 1. MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下，MyBatis 允许使用插件来拦截的方法调用包括：
 * - Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
 * - ParameterHandler (getParameterObject, setParameters)
 * - ResultSetHandler (handleResultSets, handleOutputParameters)
 * - StatementHandler (prepare, parameterize, batch, update, query)
 * 这些类中方法的细节可以通过查看每个方法的签名来发现，或者直接查看 MyBatis 发行包中的源代码。 如果你想做的不仅仅是监控方法的调用，那么你最好相当了解要重写的方法的行为。 因为在试图修改或重写已有方法的行为时，很可能会破坏 MyBatis 的核心模块。 这些都是更底层的类和方法，所以使用插件的时候要特别当心。
 *
 * 通过 MyBatis 提供的强大机制，使用插件是非常简单的，只需实现 Interceptor 接口，并指定想要拦截的方法签名即可。
 * <p>
 * 2. {@link Interceptor}
 * <p>
 * Date: 2020/7/22 9:48 【需求编号】
 *
 * @author Sam Sho
 * @version V1.0.0
 */
@SpringBootApplication
public class MybatisConfigPluginsApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisConfigPluginsApplication.class, args);
    }

}
